<?php
/**
* Classe de operação da tabela 'voluntario'. Banco de Dados Mysql.
* Estas classes não contemplam meu projeto final, por estarem obsoletas, estou contruindo
* novos templates em Persistent Data Object com definição de prepared statements contra
* sql injection, utilize para meio de testes, nunca coloque em produção, servindo
* apenas de trampolin para classe de produção
*
* @autor: Alessander Wasem
* @data: 2014-05-21 21:57
*/
class VoluntarioMySqlDAO implements VoluntarioDAO{
        
        protected $table = 'voluntario';
        
	/**
	 * Implementa o dominio chave primária na seleção de único registro
	 *
	 * @parametro String $id primary key
	 * @retorna VoluntarioMySql 
	 */
         
	public function load($id){
            $sql = "SELECT * FROM $this->table WHERE fk_usuario = :fk_usuario";
            $stmt = ConnectionFactory::prepare($sql);
            $stmt->bindParam(':fk_usuario', $id, PDO::PARAM_INT);
            $stmt->execute();
            return $stmt->fetch();
	}

	/**
	 * Obtem todos o registros das Tabelas
	 */
         
	public function queryAll(){
	   $sql = "SELECT * FROM $this->table";
           $stmt = ConnectionFactory::prepare($sql);
           $stmt->execute();
           return $stmt->fetchAll();	
	}
	
	/**
 	 * Exclui um registro da tabela
 	 * @parametro voluntario chave primária
 	 */
         
	public function delete($id){
            $sql = "DELETE FROM $this->table WHERE fk_usuario = :fk_usuario";
            $stmt = ConnectionFactory::prepare($sql);
            $stmt->bindParam(':fk_usuario', $id, PDO::PARAM_INT);
            return $stmt->execute();
	}
	
	/**
 	 * Inseri um registro na tabela
 	 *
 	 * @parametro VoluntarioMySql voluntario
 	 */
         
	public function insert(Voluntario $Voluntario){
           $sql = "INSERT INTO $this->table (status, fk_curso, observacoes, manha, tarde, noite, telefone1, telefone2, telefone3, presenca) VALUES ( :status,  :fkCurso,  :observacoes,  :manha,  :tarde,  :noite,  :telefone1,  :telefone2,  :telefone3,  :presenca)";
  
           
	   $status = $Voluntario->getStatus();
	   $fkCurso = $Voluntario->getFkCurso();
	   $observacoes = $Voluntario->getObservacoes();
	   $manha = $Voluntario->getManha();
	   $tarde = $Voluntario->getTarde();
	   $noite = $Voluntario->getNoite();
	   $telefone1 = $Voluntario->getTelefone1();
	   $telefone2 = $Voluntario->getTelefone2();
	   $telefone3 = $Voluntario->getTelefone3();
	   $presenca = $Voluntario->getPresenca();
           
           $stmt = ConnectionFactory::prepare($sql);
           
           
	   $stmt->bindParam(':status', $status);
	   $stmt->bindParam(':fkCurso', $fkCurso);
	   $stmt->bindParam(':observacoes', $observacoes);
	   $stmt->bindParam(':manha', $manha);
	   $stmt->bindParam(':tarde', $tarde);
	   $stmt->bindParam(':noite', $noite);
	   $stmt->bindParam(':telefone1', $telefone1);
	   $stmt->bindParam(':telefone2', $telefone2);
	   $stmt->bindParam(':telefone3', $telefone3);
	   $stmt->bindParam(':presenca', $presenca);
           return $stmt->execute();    
	}
	
	/**
 	 * atualiza um registro da tabela
 	 *
 	 * @parametro VoluntarioMySql voluntario
 	 */
         
	public function update(Voluntario $Voluntario){
           $sql = "UPDATE $this->table SET status = :status, fk_curso = :fk_curso, observacoes = :observacoes, manha = :manha, tarde = :tarde, noite = :noite, telefone1 = :telefone1, telefone2 = :telefone2, telefone3 = :telefone3, presenca = :presenca WHERE fk_usuario = :id";
           $id = $Voluntario->getFkUsuario();
     
           
	   $status = $Voluntario->getStatus();
	   $fkCurso = $Voluntario->getFkCurso();
	   $observacoes = $Voluntario->getObservacoes();
	   $manha = $Voluntario->getManha();
	   $tarde = $Voluntario->getTarde();
	   $noite = $Voluntario->getNoite();
	   $telefone1 = $Voluntario->getTelefone1();
	   $telefone2 = $Voluntario->getTelefone2();
	   $telefone3 = $Voluntario->getTelefone3();
	   $presenca = $Voluntario->getPresenca();
           
           $stmt = ConnectionFactory::prepare($sql);
           $stmt->bindParam(':id', $id);
           
           
	   $stmt->bindParam(':status', $status);
	   $stmt->bindParam(':fkCurso', $fkCurso);
	   $stmt->bindParam(':observacoes', $observacoes);
	   $stmt->bindParam(':manha', $manha);
	   $stmt->bindParam(':tarde', $tarde);
	   $stmt->bindParam(':noite', $noite);
	   $stmt->bindParam(':telefone1', $telefone1);
	   $stmt->bindParam(':telefone2', $telefone2);
	   $stmt->bindParam(':telefone3', $telefone3);
	   $stmt->bindParam(':presenca', $presenca);
           
           return $stmt->execute(); 
	}

}
